package com.company.emenu.util;

import java.awt.Image;
import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.OutputStream;
import java.io.StringReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Random;
import java.util.StringTokenizer;
import java.util.Vector;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



/**
 * 
 * @author 
 */
public class Tool {
	/**
	 * 
	 * 功能描述：判断目录是否在服务器上存在，如果不存在，创建该目录。 作者:; 日期:2008-6-24 日期:下午02:19:05 *
	 * 方法名:mkdirs 访问类:Tool
	 * 
	 * @param path
	 *            绝对路径
	 */
	public static void mkdirs(String path) {
		if (!(new File(path).isDirectory())) {
			try {
				new File(path).mkdirs();
			} catch (SecurityException e) {
				e.getStackTrace();
				System.out.println("can not make security direcoty");
			}
		}
	}

	/**
	 * 
	 * 功能描述： 判断文件是否在服务器上存在，如果不存在，创建该文件。 作者:; 日期:2008-6-24 日期:下午02:32:12
	 * 方法名:mkfiles 访问类:Tool
	 * 
	 * @param path
	 *            绝对路径
	 * 
	 */
	public static void mkfiles(String path) {
		File file = new File(path);
		if (!file.exists()) {
			try {
				file.createNewFile();
			} catch (IOException e) {
				System.out.println("can not make security file");
				e.printStackTrace();
			}
		}
	}

	/*
	 * 作者: 功能:判断文件目录是否存在,不存在则进行创建 参数说明: path:绝对路径
	 */
	public static void mkFiledirs(String filename) {
		String filepath = filename.replace('\\', '/');
		int length = filename.trim().length();
		if (length > 0) {
			int i = filepath.lastIndexOf("/");
			if (i >= 0) {
				filepath = filepath.substring(0, i + 1);

			}
		}
		if (!(new File(filepath).isDirectory())) {
			try {
				new File(filepath).mkdirs();
			} catch (SecurityException e) {
				System.out.println("can not make security direcoty");
			}
		}
	}

	/**
	 * 
	 * 功能描述：将数据的NULL设为"" 作者:; 日期:2008-6-24 日期:下午02:33:43 方法名:setMapNull
	 * 访问类:Tool
	 * 
	 * @param rsMap
	 * @return String[]
	 * 
	 */
	public static String[] setMapNull(String[] rsMap) {
		for (int i = 0; i < rsMap.length; i++) {
			rsMap[i] = Tool.isNull(rsMap[i]) ? "" : rsMap[i];
		}
		return rsMap;
	}

	/**
	 * 
	 * 功能描述：返回该路径的文件名 作者:; 日期:2008-6-24 日期:下午02:37:04 方法名:GetFileName
	 * 访问类:Tool
	 * 
	 * @param filepath
	 *            绝对路径
	 * @return String
	 * 
	 */
	public static String GetFileName(String filepath) {
		String returnstr = "*.*";
		int length = filepath.trim().length();

		filepath = filepath.replace('\\', '/');
		if (length > 0) {
			int i = filepath.lastIndexOf("/");
			if (i >= 0) {
				filepath = filepath.substring(i + 1);
				returnstr = filepath;
			}
		}
		return returnstr;
	}

	/**
	 * 
	 * 功能描述：输出对象 参数说明 obj 想要输出的对象 作者:; 日期:2008-6-24 日期:下午02:37:55 方法名:print
	 * 访问类:Tool
	 * 
	 * @param obj
	 * 
	 */
	public static void print(Object obj) {
		System.out.println(obj);
	}

	/**
	 * 
	 * 功能描述：输出对象 参数说明 obj 想要输出的对象，根据系统设置debugState的值，1输出 作者:; 日期:2008-6-24
	 * 日期:下午02:38:09 方法名:print 访问类:Tool
	 * 
	 * @param obj
	 * @param debugState
	 * 
	 */
	public static void print(Object obj, String debugState) {
		if ("1".equalsIgnoreCase(debugState)) {
			System.out.println(obj);
		}
	}

	/**
	 * 
	 * 功能描述：删除文件夹 作者:; 日期:2008-6-24 日期:下午02:41:03 方法名:path_delete 访问类:Tool
	 * 
	 * @param path
	 *            绝对路径
	 * 
	 */
	public static void path_delete(String path) {
		if ((new File(path).isDirectory())) {
			try {
				new File(path).delete();
			} catch (SecurityException e) {
				System.out.println("can not delete security direcoty");
			}
		}
	}

	/**
	 * 
	 * 功能描述：删除文件的所有文件夹和文件 作者:; 日期:2008-6-24 日期:下午02:41:59 方法名:DeleteFileByAll
	 * 
	 * 
	 * 访问类:Tool
	 * 
	 * @param folderPath
	 * 
	 */
	public static void DeleteFileByAll(String folderPath) {
		try {
			delAllFile(folderPath); // 删除完里面所有内容
			String filePath = folderPath;
			filePath = filePath.toString();
			java.io.File myFilePath = new java.io.File(filePath);
			myFilePath.delete(); // 删除空文件夹
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 
	 * 功能描述： 删除指定文件夹下所有文件 作者:; 日期:2008-6-30 日期:上午10:45:04 方法名:delAllFile
	 * 访问类:Tool
	 * 
	 * @param path
	 *            文件夹完整绝对路径
	 * @return boolean
	 * 
	 */
	public static boolean delAllFile(String path) {
		boolean flag = false;
		File file = new File(path);
		if (!file.exists()) {
			return flag;
		}
		if (!file.isDirectory()) {
			return flag;
		}
		String[] tempList = file.list();
		File temp = null;
		for (int i = 0; i < tempList.length; i++) {
			if (path.endsWith(File.separator)) {
				temp = new File(path + tempList[i]);
			} else {
				temp = new File(path + File.separator + tempList[i]);
			}
			if (temp.isFile()) {
				temp.delete();
			}
			if (temp.isDirectory()) {
				delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
				DeleteFileByAll(path + "/" + tempList[i]);// 再删除空文件夹
				flag = true;
			}
		}
		return flag;
	}

	/**
	 * 
	 * 功能描述： 作者:; 日期:2008-6-30 日期:上午10:45:41 方法名:DeleteFileByAllTWO 访问类:Tool
	 * 
	 * @param file
	 * @return boolean
	 * 
	 */
	public static boolean DeleteFileByAllTWO(File file) {
		boolean bool = true;
		try {
			if (file.exists())// 如果存在
			{
				if (file.isDirectory()) {
					File files[] = file.listFiles();
					if (files.length == 0) {
						file.delete();
					}
					for (int i = 0; i < files.length; i++) {
						File newfile = files[i];
						if (newfile.isDirectory()) {
							DeleteFileByAllTWO(newfile);
						} else {
							newfile.delete();
						}
					}
				} else {// 如果是文件直接删除
					file.delete();
				}

			}
		} catch (Exception e) {
			e.printStackTrace();
			bool = false;
		}
		return bool;
	}

	/**
	 * 
	 * 功能描述：删除文件 作者:; 日期:2008-6-30 日期:上午10:46:34 方法名:file_delete 访问类:Tool
	 * 
	 * @param path
	 * 
	 */
	public static void file_delete(String path) {
		if ((new File(path).exists())) {
			try {
				new File(path).delete();
			} catch (SecurityException e) {
				System.out.println("can not delete security direcoty");
			}
		}
	}

	/**
	 * 
	 * 功能描述： 下载文件 作者:，修改：2009-03-07; 日期:2008-6-30 日期:上午10:46:58
	 * 方法名:downFile 访问类:Tool
	 * 
	 * @param response
	 * @param dir
	 * @param filename
	 * @throws FileNotFoundException
	 * @throws IOException
	 * 
	 */
	public static void downFile(HttpServletResponse response, String dir,
			String filename) throws FileNotFoundException, IOException {
		// 设置响应头和下载保存的文件名
		response.reset();
		// response.setContentType("application/x-msdownload"); // windows
		response.setContentType("text/html;charset=gb2312");
		//DealString deal = new DealString();
		response.setHeader("Content-Disposition", "attachment; filename=\""
				+ new String(filename.getBytes("gb2312"),"iso8859-1") + "\"");

		// 新建文件输入输出流
		OutputStream output = null;
		FileInputStream fis = null;
		try {
			// 新建File对象
			File f = new File(dir);
			// 新建文件输入输出流对象
			output = response.getOutputStream();
			fis = new FileInputStream(f);
			// 设置每次写入缓存大小
			byte[] b = new byte[(int) f.length()];
			// out.print(f.length());
			// 把输出流写入客户端
			int i = 0;
			while ((i = fis.read(b)) > 0) {
				output.write(b, 0, i);
			}
			if(output != null) {
				output.flush();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (fis != null) {
				fis.close();
				fis = null;
			}
			if (output != null) {
				output.close();
				output = null;
			}
		}
	}
//
//	public static void downFile(HttpServletResponse response, BaseFile baseFile)
//			throws FileNotFoundException, IOException {
//		if (baseFile.getRecordid() != null) {
//			byte b[] = new byte[8192];
//			String dir = "//" + baseFile.getDirPath() + "//" + baseFile.getRecordid()
//					+ "." + baseFile.getFileType();
//			// 设置响应头和下载保存的文件名
//			response.reset();
//			//response.setContentType("application/x-msdownload"); // windows
//			response.setHeader("Content-Disposition", "attachment; filename=\""
//					+ new String(baseFile.getFileName().getBytes("gb2312"),"iso8859-1") + "\"");
//
//			// 新建文件输入输出流
//			OutputStream output = null;
//			InputStream fis = null;
//			try {
//				int length = 0;
//				if (!Tool.isNull(baseFile.getDirPath())) {
//					File file = new File(dir);
//					if (file.exists()) {
//						length = (int) file.length();
//						fis = new FileInputStream(file);
//					} else {
//						dir = "//" + baseFile.getDirPath() + "//"
//								+ baseFile.getFileName();
//						file = new File(dir);
//						if (file.exists()) {
//							length = (int) file.length();
//							fis = new FileInputStream(file);
//						}
//					}
//				} else {
//					length = (int) baseFile.getFileBody().length;
//					fis = new ByteArrayInputStream(baseFile.getFileBody());
//				}
//				if (length != 0) {
//					while ((fis.read(b)) != -1) {
//						response.getOutputStream().write(b);
//					}
//					response.getOutputStream().flush();
//				} else {
//					StringBuffer buffer = new StringBuffer();
//					buffer.append("<script>");
//					buffer.append("alert('没有发现文件');");
//					buffer.append("</script>");
//					response.getOutputStream().write(
//							buffer.toString().getBytes());
//				}
//				// out.print(f.length());
//				// 把输出流写入客户端
//				int i = 0;
//				while ((i = fis.read(b)) > 0) {
//					output.write(b, 0, i);
//				}
//				if(output != null) {
//					output.flush();
//				}
//			} catch (Exception e) {
//				e.printStackTrace();
//			} finally {
//				if (fis != null) {
//					fis.close();
//					fis = null;
//				}
//				if (output != null) {
//					output.close();
//					output = null;
//				}
//			}  
//			// response.setContentType("application/octet-stream");
//			/*
//			 * response.setHeader("Content-Disposition", "attachment;filename=" +
//			 * deal.toUtf8String(baseFile.getFileName())); InputStream in =
//			 * null; int length = 0; if (!Tool.isNull(baseFile.getDirPath())) {
//			 * File file = new File(dir); if(file.exists()) { length = (int)
//			 * file.length(); in = new FileInputStream(file); } else { dir =
//			 * baseFile.getDirPath() + "/" + baseFile.getFileName(); file = new
//			 * File(dir); if(file.exists()) { length = (int) file.length(); in =
//			 * new FileInputStream(file); } } } else { length = (int)
//			 * baseFile.getFileBody().length; in = new
//			 * ByteArrayInputStream(baseFile.getFileBody()); } in = new
//			 * BufferedInputStream(in); if (length != 0) { while ((in.read(b)) !=
//			 * -1) { response.getOutputStream().write(b); } in.close();
//			 * response.getOutputStream().flush(); } else { StringBuffer buffer =
//			 * new StringBuffer(); buffer.append("<script>");
//			 * buffer.append("alert('没有发现文件');"); buffer.append("</script>");
//			 * response.getOutputStream().write(buffer.toString().getBytes()); }
//			 */
//		}
//	}
	
	/**
	 * 
	 * 功能描述：下载文件 作者:;修改：2009-03-07 日期:2008-6-30 日期:上午11:22:23 方法名:downFile
	 * 访问类:Tool
	 * 
	 * @param request
	 * @param response
	 * 
	 */
	public static void downFile(HttpServletRequest request,
			HttpServletResponse response) {
		String fileURL = request.getParameter("path");
		String fileName = request.getParameter("fileName");
		String openType = request.getParameter("openType");
		if (fileName == null)
			fileName = "";
		String realPath = request.getSession().getServletContext().getRealPath(
				fileURL);
		File f = new File(realPath);
		OutputStream op = null;
		try {
			op = response.getOutputStream();
		} catch (IOException e1) {
			e1.printStackTrace();
		}
		if (fileURL.endsWith(".jsp")) {
		}
		FileInputStream in = null;
		try {
			in = new FileInputStream(realPath);
			response.reset();
			// response.setContentType("application/x-msdownload");
			if (openType != null && openType.equals("inline")) {
				response.setHeader("Content-Disposition", "inline; filename="
						+ new String(fileName.getBytes("gb2312"),"iso8859-1"));
			} else {
				response.setHeader("Content-Disposition",
						"attachment; filename=" + new String(fileName.getBytes("gb2312"),"iso8859-1"));
			}
			// response.setHeader("Content-Disposition", "inline; filename=" +
			// Tools.toUtf8String(fileName));
			response.setContentLength((int) f.length());

			int length = (int) f.length();
			if (length != 0) {
				byte[] buf = new byte[4096];
				while ((in != null) && ((length = in.read(buf)) != -1)) {
					op.write(buf, 0, length);
				}
				in.close();
				op.flush();
				op.close();
			} else {
				StringBuffer buffer = new StringBuffer();
				buffer.append("<script>");
				buffer.append("alert('没有发现文件');");
				buffer.append("</script>");
				op.write(buffer.toString().getBytes());
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			StringBuffer buffer = new StringBuffer();
			buffer.append("<script>");
			buffer.append("alert('没有发现文件');");
			buffer.append("</script>");
			try {
				op.write(buffer.toString().getBytes());
			} catch (IOException e1) {
			}
		} catch (IOException e) {
		}
	}

	/**
	 * 
	 * 功能描述：:Form中Bean置空 作者:; 日期:2008-6-30 日期:上午10:47:33 方法名:setNullBean
	 * 访问类:Tool
	 * 
	 * @param request
	 * @param txt
	 * 
	 */
	public static void setNullBean(HttpServletRequest request, String[] txt) {
		for (int i = 0; i < txt.length; i++) {
			request.setAttribute(txt[i], "");
		}
	}

	/**
	 * 
	 * 功能描述：Form中setAttribute Bean 作者:; 日期:2008-6-30 日期:上午10:48:08
	 * 方法名:setBean 访问类:Tool
	 * 
	 * @param request
	 * @param txt
	 * @param rsMap
	 * 
	 */
	public static void setBean(HttpServletRequest request, String[] txt,
			String[] rsMap) {
		for (int i = 0; i < txt.length; i++) {
			rsMap[i] = Tool.isNull(rsMap[i]) ? "" : rsMap[i];
			request.setAttribute(txt[i], rsMap[i]);
		}
	}

	/**
	 * 
	 * 功能描述：数组截取，返回一定数量的数组 作者:; 日期:2008-6-30 日期:上午10:48:38 方法名:getNewSz
	 * 访问类:Tool
	 * 
	 * @param txt
	 * @param number
	 * @return String[]
	 * 
	 */
	public static String[] getNewSz(String[] txt, int number) {
		String[] str = new String[number];
		for (int i = txt.length - number; i < txt.length; i++) {
			str[i - (txt.length - number)] = txt[i];
		}
		return str;
	}

	/**
	 * 
	 * 功能描述：数组截取，返回一定数量的数组,从开始下标到截一定的数量 作者:; 日期:2008-6-30 日期:上午10:49:11
	 * 方法名:getNewSz 访问类:Tool
	 * 
	 * @param txt
	 * @param start
	 * @param len
	 * @return String[]
	 * 
	 */
	public static String[] getNewSz(String[] txt, int start, int len) {
		String[] str = new String[len];
		int k = 0;
		for (int i = start; i < len; i++) {
			str[k] = txt[i];
			k++;
		}
		return str;

	}

	/**
	 * 
	 * 功能描述：将List转换成二维数组 返回一个二维数组 作者:; 日期:2008-6-30 日期:上午10:49:54
	 * 方法名:listToArray 访问类:Tool
	 * 
	 * @param datalist
	 * @param txt
	 * @return String[][]
	 * 
	 */
	public static String[][] listToArray(List datalist, String[] txt) {
		String[][] data;
		data = new String[datalist.size()][txt.length];
		for (int i = 0; i < datalist.size(); i++) {
			HashMap<String, String> map = new HashMap<String, String>();
			map = (HashMap) datalist.get(i);
			for (int k = 0; k < txt.length; k++) {
				if (Tool.isNull(map.get(txt[k]))) {
					data[i][k] = "";
				} else {
					data[i][k] = map.get(txt[k]).toString();
				}
			}
		}

		return data;
	}

	/**
	 * 
	 * 功能描述：将List转换成一维数组 返回一个一维数组 作者:; 日期:2008-6-30 日期:上午10:50:04
	 * 方法名:listToArray 访问类:Tool
	 * 
	 * @param datalist
	 * @param txt
	 * @return String[]
	 * 
	 */
	public static String[] listToArray(List datalist, String txt) {
		if(datalist == null || datalist.size() == 0) {
			return null;
		}
		String[] data = null;
		data = new String[datalist.size()];
		for (int i = 0; i < datalist.size(); i++) {
			HashMap<String, String> map = new HashMap<String, String>();
			map = (HashMap) datalist.get(i);
			if (Tool.isNull(map.get(txt))) {
				data[i] = "";
			} else {
				data[i] = map.get(txt).toString();
			}

		}
		return data;
	}

	/**
	 * 功能描述：返回一个唯一的ID号 作者:; 日期:2008-6-30 日期:上午10:50:48 方法名:getId 访问类:Tool
	 * 
	 * @return String
	 * 
	 */
	public static String getId() {
		return getRecordid();
	}

	/**
	 * 
	 * 功能描述：返回一个唯一的ID号 当前时间加上5位的随机数 作者:; 日期:2008-6-30 日期:上午10:51:51
	 * 方法名:getRecordid 访问类:Tool
	 * 
	 * @return String
	 * 
	 */
	public static String getRecordid() {
		String recordid = "";
		java.util.Date dt = new java.util.Date();
		long lg = dt.getTime();
		Long ld = new Long(lg);
		String rand = new Integer(new java.util.Random().nextInt(90000) + 10000)
				.toString();
		recordid = ld.toString() + rand;
		return recordid;
	}

	/**
	 * 
	 * 功能描述： 得到页面上的值 request.getParameter(txt[i]) 作者:; 日期:2008-6-30
	 * 日期:上午10:52:37 方法名:getBean 访问类:Tool
	 * 
	 * @param request
	 * @param txt
	 * @return String[]
	 * 
	 */
	public static String[] getBean(HttpServletRequest request, String[] txt) {
		String[] txtV = new String[txt.length];
		for (int i = 0; i < txt.length; i++) {
			txtV[i] = request.getParameter(txt[i]);
		}
		return txtV;
	}

	/**
	 * 
	 * 功能描述：将字符串分割，返回 Vector 作者:; 日期:2008-6-30 日期:上午10:53:39 方法名:parseCSV
	 * 访问类:Tool
	 * 
	 * @param s
	 * @return Vector
	 * 
	 */
	public static Vector parseCSV(String s) {
		Vector v = new Vector();
		StringTokenizer st = new StringTokenizer(s, ",");
		while (st.hasMoreTokens()) {
			v.add(st.nextToken());
		}
		return v;
	}

	/**
	 * 
	 * 功能描述：将一字符串中A字符串替换成B字符串 作者:; 日期:2008-6-30 日期:上午10:56:02
	 * 方法名:replaceAWithB 访问类:Tool
	 * 
	 * @param str
	 * @param A
	 * @param B
	 * @return String
	 * 
	 */
	public static String replaceAWithB(String str, String A, String B) {
		StringBuffer res = new StringBuffer();
		int p = 0;
		int q = 0;
		while ((q = str.indexOf(A, p)) > -1) {
			res.append(str.substring(p, q));
			if (B != null)
				res.append(B);
			p = q + A.length();
		}
		res.append(str.substring(p));
		return res.toString();
	}
	
	
	

	/**
	 * 
	 * 功能描述：得到当前服务器端时间 作者:; 日期:2008-6-30 日期:上午10:57:24 方法名:getTime 访问类:Tool
	 * 
	 * @return String
	 * 
	 */
	public static String getTime() {
		Calendar calendar = Calendar.getInstance();
		String hh = "";
		if (calendar.get(calendar.HOUR_OF_DAY) < 10) {
			hh = String.valueOf(calendar.get(calendar.HOUR_OF_DAY));
			hh = "0" + hh;
		} else {
			hh = String.valueOf(calendar.get(calendar.HOUR_OF_DAY));
		}
		String ss = String.valueOf(calendar.get(calendar.MINUTE));
		String times = hh + ":" + ss;
		return times;
	}
	
	/**
	 * 
	 * 功能描述：得到当前服务器端时间 方法名:getTimes 访问类:Tool
	 * 
	 * @return String
	 * 
	 */
	public static String getTimes() {
		Calendar calendar = Calendar.getInstance();
		String hh = calendar.get(calendar.HOUR_OF_DAY) < 10? "0"+String.valueOf(calendar.get(calendar.HOUR_OF_DAY))
				: String.valueOf(calendar.get(calendar.HOUR_OF_DAY));
		String ss = calendar.get(calendar.MINUTE) < 10? "0"+String.valueOf(calendar.get(calendar.MINUTE))
				: String.valueOf(calendar.get(calendar.MINUTE));
		String second = calendar.get(calendar.SECOND) < 10? "0"+String.valueOf(calendar.get(calendar.SECOND))
				: String.valueOf(calendar.get(calendar.SECOND));
		String times = hh + ":" + ss +":"+ second;
		return times;
	}

	/**
	 * 
	 * 功能描述：根据客户端IP地址，返回客户端MAC地址 因此方法执行时间较长，最好少用 作者:; 日期:2008-6-30
	 * 日期:上午10:58:17 方法名:getMacAddressIP 访问类:Tool
	 * 
	 * @param remotePcIP
	 * @return String
	 * 
	 */
	public static String getMacAddressIP(String remotePcIP) {
		String str = "";
		String macAddress = "";
		try {
			Process pp = Runtime.getRuntime().exec("nbtstat -A " + remotePcIP);
			InputStreamReader ir = new InputStreamReader(pp.getInputStream());
			LineNumberReader input = new LineNumberReader(ir);
			for (int i = 1; i < 100; i++) {
				str = input.readLine();
				if (str != null) {
					if (str.indexOf("MAC Address") > 1) {
						macAddress = str.substring(
								str.indexOf("MAC Address") + 14, str.length());
					}
				}
			}
		} catch (IOException ex) {

		} finally {

		}
		return macAddress;
	}

	/**
	 * 
	 * 功能描述：得到当前时间 作者:; 日期:2008-6-30 日期:上午11:00:53 方法名:getCurrentTime
	 * 访问类:Tool
	 * 
	 * @return String
	 * 
	 */
	public static String getCurrentTime() {
		DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,
				DateFormat.LONG, Locale.CHINA);
		return df.format(new Date());
	}

	/**
	 * 
	 * 功能描述： ; 日期:Sep 2, 2008 时间:3:22:42 PM 方法名:getCurrentTime1 访问类:Tool
	 * 返回类型:String
	 * 
	 * @return String
	 */
	public static String getCurrentTime1() {
		Date dt = new java.util.Date();
		SimpleDateFormat sdf = new java.text.SimpleDateFormat("HH:MM:ss");
		return sdf.format(dt);
	}

	/**
	 * 
	 * 功能描述：得到当前时间 ，返回指定格式 "HH:MM:ss" 作者:; 日期:2008-6-30 日期:上午11:02:08
	 * 方法名:getCurrentTime 访问类:Tool
	 * 
	 * @param format
	 * @return String
	 * 
	 */
	public static String getCurrentTime(String format) {
		Date dt = new java.util.Date();
		SimpleDateFormat sdf = new java.text.SimpleDateFormat(format);
		return sdf.format(dt);
	}

	public static Timestamp getSqlTime(Date date) {
		return new Timestamp(date.getTime());
	}

	public static Timestamp getSystemTime() {
		return getSqlTime(new Date());
	}

	public static Timestamp getSqlTime1(String dateStr) {
		if (isNull(dateStr))
			return null;
		return getSqlTime(getStringTime1(dateStr));
	}

	public static Timestamp getSqlTime2(String dateStr) {
		return getSqlTime(getStringTime2(dateStr));
	}

	public static Timestamp getSqlTime3(String dateStr) {
		if (isNull(dateStr))
			return null;
		return getSqlTime(getStringTime3(dateStr));
	}

	/**
	 * 
	 * 功能描述：判断字符串p是否为空 作者:; 日期:2008-6-30 日期:上午11:04:13 方法名:isNull 访问类:Tool
	 * 
	 * @param p
	 * @return boolean
	 * 
	 */
	public static boolean isNull(String p) {
		if (p == null || p.equalsIgnoreCase("")) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 
	 * 功能描述：判断数字p是否为0 作者:; 日期:2008-6-30 日期:上午11:04:27 方法名:isNull 访问类:Tool
	 * 
	 * @param p
	 * @return boolean
	 * 
	 */

	public static boolean isNull(int p) {
		int i = 0;
		return p != i;
	}

	/**
	 * 
	 * 功能描述： 判断数字p是否为0 作者:; 日期:2008-6-30 日期:上午11:06:23 方法名:isNull 访问类:Tool
	 * 
	 * @param p
	 * @return boolean
	 * 
	 */
	public static boolean isNull(long p) {
		long i = 0;
		return p != i;
	}

	/**
	 * 
	 * 功能描述：将文件流写入指定的文件 作者:; 日期:2008-6-30 日期:上午11:08:01 方法名:write 访问类:Tool
	 * 
	 * @param path
	 * @param add_Str
	 * @param accpet
	 * 
	 */
	public static void write(String path, String add_Str, boolean accpet) {
		BufferedWriter bw = null;
		File f = null;
		FileWriter fw = null;

		f = new File(path.substring(0, path.lastIndexOf("\\")));
		if (!f.exists())
			f.mkdirs();
		f = new File(path);
		try {
			if (!f.exists()) {
				f.createNewFile();
				f = new File(path);
			}
			fw = new FileWriter(f, accpet);
			bw = new BufferedWriter(fw);
			bw.write(add_Str);
			bw.flush();
		} catch (IOException e) {
			System.out.println("写文件失败:" + e.getMessage());
		} finally {
			try {
				if (bw != null) {
					bw.close();
					bw = null;
				}
				if (fw != null) {
					fw.close();
					fw = null;
				}
			} catch (IOException e1) {
				System.out.println("写入文件失败，关闭文件流失败：" + e1.getMessage());
			}
		}
	}

	/**
	 * 
	 * 功能描述：得到长度为length的随机字符串 作者:; 日期:2008-6-30 日期:上午11:08:44 方法名:random
	 * 访问类:Tool
	 * 
	 * @param length
	 * @return String
	 * 
	 */
	public static String random(int length) {
		int range = 10;
		String ret = "";
		Random rand = new Random();
		for (int i = 0; i < length; i++) {
			int temp = rand.nextInt(range);
			ret = ret + temp;
		}
		return ret;
	}

	/**
	 * 
	 * 功能描述：功能:在0-range范围内,给到count个随机数 作者:; 日期:2008-6-30 日期:上午11:09:13
	 * 方法名:random 访问类:Tool
	 * 
	 * @param range
	 * @param count
	 * @return String[]
	 * 
	 */
	public static String[] random(int range, int count) {
		if (count > range) {
			return null;
		}
		String[] randstr = new String[count];
		List list = new ArrayList();
		for (int i = 0; i < range; i++) {
			list.add(String.valueOf(i));
		}
		Random rand = new Random();
		int n = 0;
		for (int i = 0; i < count; i++) {
			int j = rand.nextInt(list.size());
			randstr[n] = (String) list.get(j);
			list.remove(list.get(j));
			n++;
		}

		return randstr;
	}

	/**
	 * 
	 * 功能描述： 得到指定图片的尺寸大小 作者:; 日期:2008-6-30 日期:上午11:11:18 方法名:getImageSize
	 * 访问类:Tool
	 * 
	 * @param file
	 * @return int[]
	 * 
	 */
	final public static int[] getImageSize(File file) {

		Image src = null;
		try {
			src = ImageIO.read(file);
			int w = src.getWidth(null);// 得到源图宽
			int h = src.getHeight(null);// 得到源图高
			int[] s = { w, h };
			return s;
		} catch (Exception e) {

			return null;
		}
	}

	/**
	 * 
	 * 功能描述：得到指定图片的尺寸大小 作者:; 日期:2008-6-30 日期:上午11:11:59 方法名:getImageSize
	 * 访问类:Tool
	 * 
	 * @param inputStream
	 * @return int[]
	 * 
	 */
	final public static int[] getImageSize(InputStream inputStream) {
		Image src = null;
		try {
			src = ImageIO.read(inputStream);
			int w = src.getWidth(null);// 得到源图宽
			int h = src.getHeight(null);// 得到源图高
			int[] s = { w, h };
			return s;
		} catch (Exception e) {

			return null;
		}
	}

	/**
	 * 
	 * 功能描述：得到指定图片的尺寸大小 作者:; 日期:2008-6-30 日期:上午11:12:08 方法名:getImageSize
	 * 访问类:Tool
	 * 
	 * @param filePath
	 * @return int[]
	 * 
	 */
	final public static int[] getImageSize(String filePath) {
		return getImageSize(new File(filePath));
	}

	/**
	 * 
	 * 功能描述：图片按比例压缩 作者:; 日期:2008-6-30 日期:上午11:12:42 方法名:getImageSize 访问类:Tool
	 * 
	 * @param sw
	 * @param sh
	 * @param w
	 * @param h
	 * @return int[]
	 * 
	 */
	final public static int[] getImageSize(int sw, int sh, int w, int h) {
		float f_h = h;
		float f_w = w;
		float f_sh = sh;
		float f_sw = sw;

		if ((f_sh / f_sw) * f_w > f_h) {
			f_w = (f_sw / f_sh) * f_h;
		} else {
			f_h = (f_sh / f_sw) * f_w;
		}
		String _tmp = f_w + "";
		int i = _tmp.indexOf(".");
		int ii_w = Integer.parseInt(_tmp.substring(0, i));
		_tmp = f_h + "";
		i = _tmp.indexOf(".");
		int ii_h = Integer.parseInt(_tmp.substring(0, i));

		int[] s = { ii_w, ii_h };
		if (sw < w && sh < h) {
			s[0] = sw;
			s[1] = sh;
		}
		return s;
	}

	/**
	 * 
	 * 功能描述：字符串转换行数 作者:; 日期:2008-6-30 日期:上午11:13:01 方法名:replaceAll 访问类:Tool
	 * 
	 * @param srcStr
	 * @param s1
	 * @param s2
	 * @return String
	 * 
	 */
	public static String replaceAll(String srcStr, String s1, String s2) {
		StringReader reader = new StringReader(srcStr);
		StringBuffer _buffer = new StringBuffer();
		StringBuffer buffer = new StringBuffer();

		char[] c = new char[1];
		try {
			while (reader.read(c) >= 0) {

				_buffer.append(c[0]);
				if (s1.startsWith(_buffer.toString())) {
					if (s1.equalsIgnoreCase(_buffer.toString())) {
						_buffer = new StringBuffer();
						buffer.append(s2);

					}
				} else {
					buffer.append(_buffer.toString());
					_buffer = new StringBuffer();
				}

			}

		} catch (IOException e) {

			return null;
		}
		return buffer.append(_buffer).toString();
	}

	/**
	 * 
	 * 功能描述：将str的第一个字母大写 作者:; 日期:2008-6-30 日期:上午11:14:46
	 * 方法名:toUpcaseFirstChar 访问类:Tool
	 * 
	 * @param str
	 * @return String
	 * 
	 */
	final public static String toUpcaseFirstChar(String str) {
		if (str == null || str.length() < 1)
			return str;
		return str.substring(0, 1).toUpperCase() + str.substring(1);
	}

	/**
	 * 
	 * 功能描述：得到当前时间字符串， 作者:; 日期:2008-6-30 日期:上午11:15:12 方法名:getTimeString1
	 * 访问类:Tool
	 * 
	 * @param date
	 * @return String
	 * 
	 */
	public static String getTimeString1(Date date) {
		if (date == null)
			return "";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		return sdf.format(date);
	}
	
	public static String getTimeByFormat(Date date,String format) {
		if (date == null)
			return "";
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(date);
	}

	/**
	 * 
	 * 功能描述：得到当前时间Date， 作者:; 日期:2008-6-30 日期:上午11:15:39 方法名:getStringTime1
	 * 访问类:Tool
	 * 
	 * @param dateStr
	 * @return Date
	 * 
	 */
	public static Date getStringTime1(String dateStr) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = null;
		try {
			date = sdf.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 
	 * 功能描述：得到当前时间 yyyy-MM-dd HH:mm 作者:; 日期:2008-6-30 日期:上午11:16:48
	 * 方法名:getTimeString2 访问类:Tool
	 * 
	 * @param date
	 * @return String
	 * 
	 */
	public static String getTimeString2(Date date) {
		if (date == null)
			return "";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		return sdf.format(date);
	}

	/**
	 * 
	 * 功能描述：得到当前时间 yyyy-MM-dd HH:mm 作者:; 日期:2008-6-30 日期:上午11:17:20
	 * 方法名:getStringTime2 访问类:Tool
	 * 
	 * @param dateStr
	 * @return Date
	 * 
	 */
	public static Date getStringTime2(String dateStr) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
		Date date = null;
		try {
			date = sdf.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 功能描述：当前日期 2007-7-7 作者:黄国龙; 日期:2008-2-14 日期:下午05:07:57 方法名:getTime
	 * 访问类:Tool 返回类型:String
	 * 
	 * @return String
	 */
	public static String getNowDate() {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		String yemp = simpleDateFormat.format(new java.util.Date());
		return yemp;
	}

	/**
	 * 功能描述：当前日期时间 2007-7-7 05:07:57 作者:黄国龙; 日期:2008-2-14 日期:下午05:07:57
	 * 方法名:getTime 访问类:Tool 返回类型:String
	 * 
	 * @return String
	 */
	public static String getNowTime() {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
				"yyyy-MM-dd HH:mm:ss");
		String yemp = simpleDateFormat.format(new java.util.Date());
		return yemp;
	}

	/**
	 * 功能描述：生产如order by to_date(ZJSJ,'yyyy-MM-dd/HH24:MI:ss') desc 一样的排序语句
	 * 作者:黄国龙; 日期:2008-2-14 日期:下午05:12:20 方法名:getOrderByDate 访问类:Tool
	 * 返回类型:String
	 * 
	 * @param row
	 * @param st
	 * @return String
	 */
	public static String getOrderByDate(String row, String st) {
		return " order by to_date(" + row + ",'yyyy-MM-dd/HH24:MI:ss') " + st
				+ " ";
	}

	public static String getTimeString(Date date) {
		if (date == null)
			return "";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd/HH:mm:ss");
		return sdf.format(date);
	}

	public static String getTimeString3(Date date) {
		if (date == null)
			return "";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.format(date);
	}

	public static Date getStringTime3(String dateStr) {

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = null;
		try {
			date = sdf.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 
	 * 功能描述：在list页面中截取前面几个字符 作者:; 日期:2008-6-30 日期:上午11:18:52
	 * 方法名:getIndexString 访问类:Tool
	 * 
	 * @param str
	 * @param len
	 * @return String
	 * 
	 */
	public static String getIndexString(String str, int len) {
		if (str == null)
			return "";
		String indexString = str;
		byte[] b = str.getBytes();

		if (b.length > len) {
			int i = len / 2;
			while ((str.substring(0, i) + "...").getBytes().length < len) {
				i++;
			}
			indexString = str.substring(0, i - 1) + "...";
		}
		return indexString;
	}

	/**
	 * 
	 * 功能描述：字符串截取 作者:; 日期:2008-6-30 日期:上午11:19:16 方法名:getsubString 访问类:Tool
	 * 
	 * @param str
	 * @param len
	 * @return String
	 * 
	 */
	public static String getsubString(String str, int len) {
		String indexString = str;
		if (indexString == null)
			indexString = "";
		if (indexString.length() > len) {
			indexString = indexString.substring(0, len);
		}
		return indexString;
	}

	/**
	 * 
	 * 功能描述：将数组组成字符串，用","隔开 作者:; 日期:2008-6-30 日期:上午11:20:07 方法名:arrayToString
	 * 访问类:Tool
	 * 
	 * @param strs
	 * @param split
	 * @return String
	 * 
	 */
	public static String arrayToString(String[] strs, String split) {
		if (strs == null)
			return "";
		String tmp = "";
		for (int i = 0; i < strs.length; i++) {
			tmp += strs[i] + ",";
		}
		if (tmp.endsWith(","))
			tmp = tmp.substring(0, tmp.length() - 1);
		return tmp;
	}

	public static String toUtf8String(String s) {
		StringBuffer stringbuffer = new StringBuffer();
		for (int i = 0; i < s.length(); i++) {
			char c = s.charAt(i);
			if (c >= 0 && c <= '\377') {
				stringbuffer.append(c);
			} else {
				byte abyte0[];
				try {
					abyte0 = String.valueOf(c).getBytes("utf-8");
				} catch (Exception exception) {
					abyte0 = new byte[0];
				}
				for (int j = 0; j < abyte0.length; j++) {
					int k = abyte0[j];
					if (k < 0) {
						k += 256;
					}
					stringbuffer.append("%"
							+ Integer.toHexString(k).toUpperCase());
				}

			}
		}

		return stringbuffer.toString();
	}

	/**
	 * 
	 * 功能描述：将字符串NULL设为"" 作者:; 日期:2008-6-30 日期:上午11:23:19 方法名:getShowString
	 * 访问类:Tool
	 * 
	 * @param str
	 * @return String
	 * 
	 */
	public static String getShowString(String str) {
		return str == null ? "" : str;

	}

	/**
	 * 
	 * 功能描述：文件复制 作者:; 日期:2008-6-30 日期:上午11:24:36 方法名:fileCopy 访问类:Tool
	 * 
	 * @param srcFileName
	 * @param tarFileName
	 * @throws IOException
	 * 
	 */
	public static void fileCopy(String srcFileName, String tarFileName)
			throws IOException {
		File srcFile = new File(srcFileName);
		File tarFile = new File(tarFileName);
		InputStream inputStream = new FileInputStream(srcFile);
		OutputStream outputStream = new FileOutputStream(tarFile);
		byte[] b = new byte[1024];
		int i = -1;
		while ((i = inputStream.read(b)) > 0) {
			outputStream.write(b, 0, i);
		}
		outputStream.flush();
		outputStream.close();
		inputStream.close();
	}

	/**
	 * 
	 * 功能描述：返回当前程序的物理路径 作者:; 日期:2008-6-30 日期:上午11:25:01 方法名:getRealPath
	 * 访问类:Tool
	 * 
	 * @param request
	 * @param urlStr
	 * @return String
	 * 
	 */
	public static String getRealPath(HttpServletRequest request, String urlStr) {
		if (urlStr == null)
			return "";
		return request.getSession().getServletContext().getRealPath(urlStr);
	}

	/**
	 * 功能描述：得到一个文件的内容 作者:; 日期:2008-5-4 日期:下午04:06:23 方法名:getFileContent
	 * 访问类:Tool 返回类型:String
	 * 
	 * @param absoluteAddress
	 *            绝对路径
	 * @return String
	 * @throws FileNotFoundException
	 * @throws IOException
	 * 
	 */
	public static String getFileContent(String absoluteAddress)
			throws FileNotFoundException, IOException {
		String fileContent = "";
		FileInputStream fileinputstream = new FileInputStream(absoluteAddress);// 读取模块文件
		int lenght = fileinputstream.available();
		byte bytes[] = new byte[lenght];
		fileinputstream.read(bytes);
		fileinputstream.close();
		fileContent = new String(bytes);
		return fileContent;
	}

	/**
	 * 
	 * 功能描述： 得到在线WORD编辑器控件的访问地址 作者:; 日期:2008-6-30 日期:上午11:25:44
	 * 方法名:getServerUrl 访问类:Tool
	 * 
	 * @param request
	 * @return String
	 * 
	 */
	public static String getServerUrl(HttpServletRequest request, String way) {
		String mHttpUrlName = request.getRequestURI();
		String mScriptName = request.getServletPath();
		String mServerName = "OfficeServer.do";
		String mServerUrl = way
				+ "://"
				+ request.getServerName()
				+ ":"
				+ request.getServerPort()
				+ mHttpUrlName.substring(0, mHttpUrlName
						.lastIndexOf(mScriptName)) + "/" + mServerName;
		return mServerUrl;
	}

	/**
	 * 
	 * 功能描述：获得当前时间 ; 日期:Jul 15, 2008 时间:3:26:29 PM 方法名:getDtime 访问类:Tool
	 * 返回类型:String
	 * 
	 * @return String
	 */
	public static String getDtime() {
		GregorianCalendar hzy = new GregorianCalendar();
		int Year = hzy.get(Calendar.YEAR);
		int Month = hzy.get(Calendar.MONTH) + 1;
		int Day = hzy.get(Calendar.DATE);
		String Dtime = "";
		String Dyear = "";
		String Dmonth = "";
		String Dday = "";
		Dyear = Year < 10 ? "0" + new Integer(Year).toString() : new Integer(
				Year).toString();
		Dmonth = Month < 10 ? "0" + new Integer(Month).toString()
				: new Integer(Month).toString();
		Dday = Day < 10 ? "0" + new Integer(Day).toString() : new Integer(Day)
				.toString();
		Dtime = Dyear + "-" + Dmonth + "-" + Dday;
		return Dtime;
	}

	/**
	 * 
	 * 功能描述：将一个List转换为字符串，中间以分隔符分开,空字符以空格代替 ; 日期:Jul 18, 2008 时间:10:33:41
	 * AM 方法名:listToString 访问类:Tool 返回类型:String
	 * 
	 * @param list
	 * @param str
	 * @param splitStr
	 * @return String
	 */
	public static String listToString(List list, String str, String splitStr) {
		String res = " ";
		HashMap<String, String> map = new HashMap<String, String>();
		int i = 0;
		String resSon = " ";
		if (list != null) {
			for (i = 0; i < list.size(); i++) {
				map = (HashMap) list.get(i);
				if (map.get(str) != null) {
					resSon = map.get(str).toString();
				} else {
					resSon = " ";
				}
				if (i == 0) {
					res = resSon;
				} else {
					res += splitStr + resSon;
				}
			}
		}
		return res;
	}

	/**
	 * 
	 * 功能描述：将InputStream流转换为byte[] 作者:; 日期:2008-7-18 日期:下午05:11:46
	 * 方法名:getBytes 访问类:Tool
	 * 
	 * @param is
	 * @return
	 * @throws Exception
	 * 
	 */
	public static byte[] getBytes(InputStream is) throws Exception {
		byte[] data = null;

		Collection chunks = new ArrayList();
		byte[] buffer = new byte[1024 * 1000];
		int read = -1;
		int size = 0;

		while ((read = is.read(buffer)) != -1) {
			if (read > 0) {
				byte[] chunk = new byte[read];
				System.arraycopy(buffer, 0, chunk, 0, read);
				chunks.add(chunk);
				size += chunk.length;
			}
		}

		if (size > 0) {
			ByteArrayOutputStream bos = null;
			try {
				bos = new ByteArrayOutputStream(size);
				for (Iterator itr = chunks.iterator(); itr.hasNext();) {
					byte[] chunk = (byte[]) itr.next();
					bos.write(chunk);
				}
				data = bos.toByteArray();
			} finally {
				if (bos != null) {
					bos.close();
				}
			}
		}
		return data;
	}

	public static StringBuffer getTreeString(String id, String name,
			int childSum, int gradeInt, String clickFun, String spanClick,
			String checkClick, String icon, boolean isCheckBox) {
		StringBuffer buf = new StringBuffer();
		buf.append("<li style=\"word-break:keep-all;\" id=\"li_" + id
				+ "\"><a href=\"#\" onfocus=\"this.blur()\" >");
		for (int j = 0; j < gradeInt + 1; j++) {
			buf.append("<img src=\"images/icon/empty.gif\" border=\"0\">\r\n");
		}
		if (childSum > 0) {
			buf.append("<img id=\"img_" + id
					+ "\" src=\"images/icon/plus1.gif\"" + " onclick=\""
					+ clickFun + "\" border=\"0\"/>\r\n");
			buf.append("<img onclick=\"" + spanClick + "\" ondblclick=\""
					+ clickFun + "\" src=\"images/icon/" + icon
					+ ".gif\" border=\"0\">\r\n");
			buf.append("<span id=\"span_" + id + "\" onclick=\"" + spanClick
					+ "\" ondblclick=\"" + clickFun + "\">");
		} else {
			buf.append("<img id=\"img_" + id
					+ "\" src=\"images/icon/empty.gif\" border=\"0\"/>\r\n");
			buf.append("<img src=\"images/icon/" + icon + ".gif\" onclick=\""
					+ spanClick + "\"  border=\"0\">\r\n");
			buf.append("<span id=\"span_" + id + "\" onclick=\"" + spanClick
					+ "\">");
		}
		if (isCheckBox) {
			buf.append("<input type=\"checkbox\" id=\"checkbox_" + id
					+ "\" onclick=\"" + checkClick + "\" />\r\n");
		}
		buf.append(Tool.isNull(name) ? "" : name);
		buf.append("</span>\r\n");
		buf.append("</a>\r\n");
		buf.append("</li>\r\n");
		buf.append("<ul id=\"ul_" + id
				+ "\"  style=\"display:none\">Loading...</ul>\r\n");
		return buf;
	}
	/*
	 * 获得页面上的值，返回一个数组  090310
	 */
	public static String[] getAttributeBean(HttpServletRequest request,String []getValue) {
		int i = 0;
		if(getValue != null && getValue.length > 0) {
			String []res = new String[getValue.length];
			for(i = 0;i < getValue.length;i++) {
				String temp = request.getParameter(getValue[i]);
				temp = isNull(temp)?"":temp;
				res[i] = temp;
			}
			return res;
		} else {
			return null;
		}
	}
	/*
	 * 设置页面上的值，传入一个数组和对应的数组值  090310
	 */
	public static void setAttributeBean(HttpServletRequest request,String []getValue,String []setValue) {
		if(getValue.length != setValue.length) {
			return ;
		}
		if(setValue != null && setValue.length > 0) {
			for(int i = 0;i < setValue.length;i++) {
				request.setAttribute(getValue[i], isNull(setValue[i])?"":setValue[i]);
			}
		}
	}
	
	/*
	 * 设置页面上的值，传入一个需要设置的数组  090310
	 */
	public static void setAttributeBean(HttpServletRequest request,String []getValue) {
		String []setValue = getAttributeBean(request,getValue);
		if(getValue.length != setValue.length) {
			return ;
		}
		if(setValue != null && setValue.length > 0) {
			for(int i = 0;i < setValue.length;i++) {
				request.setAttribute(getValue[i], isNull(setValue[i])?"":setValue[i]);
			}
		}
	}
	
	
	
	/**
	 * 功能描述：动态判断网址是否有效。 作者:; 日期:2009-4-24  日期:下午14:02:20
	 * @param URLName
	 * url名称 如：http://rss.xinhuanet.com/rss/world.xml
	 * @return
	 */
	public static boolean urlExists(String URLName) {
		try {
			HttpURLConnection.setFollowRedirects(false);
			HttpURLConnection con = (HttpURLConnection) new URL(URLName)
					.openConnection();
			// con.setConnectTimeout(3000);
			// con.setReadTimeout(3000);
			con.setRequestMethod("HEAD");
			return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
		} catch (java.net.UnknownHostException e1) {
			Tool.print("----"+URLName + "路径名称错误！");
			e1.printStackTrace();
			return false;
		} catch (Exception e) {
			Tool.print("----"+URLName + "路径名称错误！");
			e.printStackTrace();
			return false;
		}
	}   
	
	public static StringBuffer getTreeHtml(String id, String name,
			int childSum, int gradeInt, String spandbclick,String imgclick, String spanClick,
			String checkClick, String icon, boolean isCheckBox) {
		StringBuffer buf=new StringBuffer();
		buf.append("<li style=\"word-break:keep-all;\" id=\"li_" + id
				+ "\"><a href=\"#\" onfocus=\"this.blur()\" >");
		for (int j = 0; j < gradeInt + 1; j++) {
			buf.append("<img src=\"images/icon/empty.gif\" border=\"0\">\r\n");
		}
		if (childSum > 0) {
			buf.append("<img id=\"img_" + id
					+ "\" src=\"images/icon/plus1.gif\"" + " onclick=\""
					+ imgclick + "\" border=\"0\"/>\r\n");
			buf.append("<img onclick=\"" + spanClick + "\" ondblclick=\""
					+ spandbclick + "\" src=\"images/icon/" + icon
					+ ".gif\" border=\"0\">\r\n");
			buf.append("<span id=\"span_" + id + "\" onclick=\"" + spanClick
					+ "\" ondblclick=\"" + spandbclick + "\">");
		} else {
			buf.append("<img id=\"img_" + id
					+ "\" src=\"images/icon/empty.gif\" border=\"0\"/>\r\n");
			buf.append("<img src=\"images/icon/" + icon + ".gif\" onclick=\""
					+ spanClick + "\"  border=\"0\">\r\n");
			buf.append("<span id=\"span_" + id + "\" onclick=\"" + spanClick
					+ "\">");
		}
		if (isCheckBox) {
			buf.append("<input type=\"checkbox\" id=\"checkbox_" + id
					+ "\" onclick=\"" + checkClick + "\" />\r\n");
		}
		buf.append(Tool.isNull(name) ? "" : name);
		buf.append("</span>\r\n");
		buf.append("</a>\r\n");
		buf.append("</li>\r\n");
		buf.append("<ul id=\"ul_" + id
				+ "\"  style=\"display:none\">Loading...</ul>\r\n");
		return buf;
	}
	
	/**
	 * 
	 * 功能描述：拼凑hql中like语句的id字符，在id两边加上特定字符
	 * 在树形列表中，根据id取得所有子节点（包含id本身）
	 * 如：select * from pub_org O,view_pub_org V where O.id=V.org.id and V.id like ‘%_001_%’
	 * 方法返回的是‘_001_’
	 * @author; 日期:2010-8-31 日期:下午09:55:58
	 * 方法名:getChangeID 访问类:Tool
	 * 
	 * @param id
	 * @return 
	 * @throws Exception
	 * 
	 */
	public static String getChangeID(String id){
		String strReturn="";
		if (id =="" || id == null) {
			strReturn ="%%";
		}
		strReturn="_" + id + "_";
		return strReturn;
	}
}
